From 76dacbfe07d16b761ec6e3116dc70b84b0e84283 Mon Sep 17 00:00:00 2001 From: oliskoli Date: Thu, 21 Aug 2008 22:06:36 +0000 Subject: [PATCH] osm: Use gb_int2ptr/gb_ptr2int instead of cryptical union vars. --- osm.c | 43 ++++++++++++++----------------------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/osm.c b/osm.c index 54c3aae33..7ef5c4f4c 100644 --- a/osm.c +++ b/osm.c @@ -424,29 +424,21 @@ osm_read(void) static void osm_features_init(void) { - /* here we take a union because of warnings - "cast to pointer from integer of different size" - on 64-bit systems */ - union { - const void *p; - int i; - } x; - + int i; + keys = avltree_init(AVLTREE_STATIC_KEYS, MYNAME); values = avltree_init(0, MYNAME); - x.p = NULL; - /* the first of osm_features is a place holder */ - for (x.i = 1; osm_features[x.i]; x.i++) - avltree_insert(keys, osm_features[x.i], x.p); + for (i = 1; osm_features[i]; i++) + avltree_insert(keys, osm_features[i], gb_int2ptr(i)); - for (x.i = 0; osm_icon_mappings[x.i].value; x.i++) { + for (i = 0; osm_icon_mappings[i].value; i++) { char buff[128]; - buff[0] = osm_icon_mappings[x.i].key; - strncpy(&buff[1], osm_icon_mappings[x.i].value, sizeof(buff) - 1); - avltree_insert(values, buff, (const void *)&osm_icon_mappings[x.i]); + buff[0] = osm_icon_mappings[i].key; + strncpy(&buff[1], osm_icon_mappings[i].value, sizeof(buff) - 1); + avltree_insert(values, buff, (const void *)&osm_icon_mappings[i]); } } @@ -455,13 +447,10 @@ static char osm_feature_ikey(const char *key) { int result; - union { - const void *p; - int i; - } x; + const void *p; - if (avltree_find(keys, key, &x.p)) - result = x.i; + if (avltree_find(keys, key, &p)) + result = gb_ptr2int(p); else result = -1; @@ -725,18 +714,14 @@ osm_rd_deinit(void) static void osm_init_icons(void) { - union { - const void *p; - int i; - } x; + int i; if (icons) return; icons = avltree_init(AVLTREE_STATIC_KEYS, MYNAME); - x.p = NULL; - for (x.i = 0; osm_icon_mappings[x.i].value; x.i++) - avltree_insert(icons, osm_icon_mappings[x.i].icon, (const void *)&osm_icon_mappings[x.i]); + for (i = 0; osm_icon_mappings[i].value; i++) + avltree_insert(icons, osm_icon_mappings[i].icon, (const void *)&osm_icon_mappings[i]); } static void -- 2.30.2